Семантичний аналізатор

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ПМ-32

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська політехніка» ЛАБОРАТОРНА РОБОТА №3 Семантичний аналізатор Львів – 2007 Тема: Розглянути підмножину мови C, у якій є ідентифікатори (довжина – не більше 10 символів), цілі константи (довжина – не більше 6 символів), дійсні константи з фіксованою крапкою, які використовуються у операторах опису (типи змінних – float , int), оператори присвоєння, оператори циклу типу for. Код програми: Лексичний аналіз перероблений для потреб семантичного #include<string.h> #include<conio.h> #include<fstream> #include<iostream> #include<new> main(void) {clrscr(); int Matr[10][8]={2,1,5,5,7,4,8,7, 1,1,9,9,7,9,8,7, 2,7,9,9,3,9,8,7, 3,7,9,9,7,9,8,7, 9,9,9,9,7,9,8,7, 9,9,6,7,7,9,8,7, 9,9,7,7,7,9,8,7, 7,7,7,7,7,7,8,7}; char *typy[10]={"","Identyfikator","0Z","0D","dughky", "=","operator prysvoyenya","error"}; char *a=""; char a2[2]; int typ=0,typ2,j=0; int k=0; char *s; ifstream in("dani.txt"); ofstream out("l.txt"); if(!out) {cout<<"Ne moghlyvo vidkryty fayl out\n "; getch(); return 1;} if(!in) {cout<<"Ne moghlyvo vidkryty fayl\n "; getch(); return 1;} while(!in.eof()) {in>>s; for(int i=0;i<strlen(s);i++) {if(s[i]>='0' && s[i]<='9') typ=Matr[typ][0]; else if((s[i]>='a' && s[i]<='z')||(s[i]>='A' && s[i]<='Z')) typ=Matr[typ][1]; else if(s[i]=='=') typ=Matr[typ][2]; else if((s[i]=='<')||(s[i]=='>')||(s[i]=='!')) typ=Matr[typ][3]; else if(s[i]=='.') typ=Matr[typ][4]; else if((s[i]=='{')||(s[i]=='}')||(s[i]=='(')||(s[i]==')')) typ=Matr[typ][5]; else if((s[i]==',')||(s[i]==';')) typ=Matr[typ][6]; else typ=7; if(typ<8) {/*cout<<s[i];*/ a2[0]=s[i];strcat(a,a2);k++;} else { if((typ2==1 && k>10)||(typ2==2 && k>6)) typ2=7; if((strcmp(a,"for")!=0)&&(typ2==1)) out<<a<<endl; else if((typ2==2)||(typ2==3)||(typ2==5)) out<<typy[typ2]<<endl; *a='\0 '; if(typ==9)i--; typ=0; k=0; } typ2=typ; } if((typ2==1 && k>10)||(typ2==2 && k>6)) typ2=7; if((strcmp(a,"for")!=0)&&(typ2==1)) out<<a<<endl; else if((typ2==2)||(typ2==3)||(typ2==5)) out<<typy[typ2]<<endl; *a='\0 '; typ=0; k=0; } in.close(); out.close(); getch(); } Семантичний аналіз: #include "stdafx.h" #include<string.h> #include<conio.h> #include<fstream> #include<iostream> #include<new> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {int popysu=0,popysu2=0, iint=-1, ifloat=-1,pnalegnosti=0; static string masiint[20], masifloat[20],typy[3]={"","0I","0F"}; string degurna, s; ifstream in ("l.txt"); if(!in.is_open()) {cout<<"Ne moghlyvo vidkryty fayl\n "; getch(); return 1;} while(!in.eof()) {in>>degurna; if((degurna=="0D")||(degurna=="0D")||(degurna=="=")||(degurna=="0Z")){s+=degurna; continue;} //////////////chek/////////////////////// for(int i=0;i<=iint;i++) {if(masiint[i]==degurna){pnalegnosti=1; break;} } if(pnalegnosti==0) for(int i=0;i<=ifloat;i++) {if(masifloat[i]==degurna){pnalegnosti=2; break;} } //////////////chek////////////////////// popysu2=popysu; if(degurna=="int") popysu=1; else if(degurna=="float") popysu=2; else popysu=0; ////////////////////////////////////////// if((popysu2>0)&&(pnalegnosti>0)){cout<<"podvijnyj opys zminnoji "<<degurna<<endl; continue;} if((popysu==0)&&(popysu2==0)&&(pnalegnosti==0)){cout<<"neopysana zminna "<<degurna<<endl; continue;} ///////////////////////////////////////////// if(popysu2!=0){pnalegnost...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини